from openpyxl import Workbook


def create_test_cases():
    """创建包含依赖关系的测试用例"""
    wb = Workbook()
    ws = wb.active
    ws.title = "接口测试用例"

    # 表头
    headers = [
        '序号', '用例名称', '接口名称', '请求方法', '接口地址',
        '请求头', '请求体', '提取规则', '依赖接口'
    ]
    ws.append(headers)

    # 测试用例数据 - 三个有依赖关系的接口
    test_cases = [
        {
            '序号': 1,
            '用例名称': '用户登录',
            '接口名称': 'login',
            '请求方法': 'POST',
            '接口地址': 'http://10.59.9.12:7001/api/public/login',  # 测试用地址
            '请求头': '{"Content-Type": "application/json"}',
            '请求体': '{"username":"15649920322","password":"123456"}',
            '提取规则': '{"token": "json.token"}',  # 从响应中提取token
            '依赖接口': ''
        },
        {
            '序号': 2,
            '用例名称': '获取用户信息',
            '接口名称': 'get_user',
            '请求方法': 'GET',
            '接口地址': 'https://httpbin.org/get',
            '请求头': '{"Authorization": "Bearer ${login.token}"}',  # 依赖登录接口的token
            '请求体': '{}',
            '提取规则': {'auth-token': 'Bearer '},
            '依赖接口': 'login'
        },
        {
            '序号': 3,
            '用例名称': '更新用户信息',
            '接口名称': 'update_user',
            '请求方法': 'PUT',
            '接口地址': 'http://10.59.9.12:7001/api/public/login',
            '请求头': '{"Content-Type": "application/json", "Authorization": "Bearer ${login.token}"}',
            '请求体': '{"user_id": "${get_user.user_id}", "name": "新名字"}',  # 依赖第二个接口的user_id
            '提取规则': '{}',
            '依赖接口': 'get_user'
        }
    ]

    # 写入数据
    for case in test_cases:
        row = [
            case['序号'],
            case['用例名称'],
            case['接口名称'],
            case['请求方法'],
            case['接口地址'],
            case['请求头'],
            case['请求体'],
            case['提取规则'],
            case['依赖接口']
        ]
        ws.append(row)

    # 调整列宽
    column_widths = {'A': 8, 'B': 15, 'C': 12, 'D': 10, 'E': 30, 'F': 25, 'G': 25, 'H': 20, 'I': 12}
    for col, width in column_widths.items():
        ws.column_dimensions[col].width = width

    wb.save('min.xlsx')
    print("测试用例文件创建成功！")


create_test_cases()